import java.util.HashMap;

public class question_287 {
}
class Solution_287 {
    public int findDuplicate(int[] nums) {
        //好吧，暴力算法超出了时间的限制
//        //这个问题是找出重复的数字，然后要求是不能对原来的数组进行改动，还有就是开辟的空间应该是o(1)大小的
//        //所以我只能想到通过暴力for循环了
//        int i=0;
//        for (i = 0; i <nums.length; i++) {
//            int sum=0;
//            for (int j = 0; j < nums.length; j++) {
//                if(nums[i]==nums[j]){
//                    sum++;
//                }
//            }
//            if(sum>=2)
//                break;
//        }
//        return i;


        //小子，别忘记了可以使用集合工具，list，set，map这些呀憨批
        HashMap<Integer, Integer> arr = new HashMap<>();
        int i;
        for (i = 0; i < nums.length; i++) {
            if(arr.get(nums[i])==null){//还没添加过这个数
                arr.put(nums[i],0);
            }else{
                break;
            }
        }
        return nums[i];
//        //快慢指针法
//        if(nums == null || nums.length < 2) {
//            return 0;
//        }
//
//        int slow = 0;
//        int fast = 0;
//
//        do {
//            slow = nums[slow];
//            fast = nums[nums[fast]];
//        } while (slow != fast);
//
//        fast = 0;
//        while (slow != fast) {
//            slow = nums[slow];
//            fast = nums[fast];
//        }
//
//        return slow;
    }


}